/**
 * promise封装 发送get请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {object} headers 请求头
 * @param {string} dataType 后端返回的数据类型
 * @return Promise
 */
function get(url,params,headers,dataType ='json'){
    return new Promise((resolve,reject)=>{
        //创建xhr对象
        const xhr = new XMLHttpRequest
        //监控请求状态
        xhr.onreadystatechange = () => {
            //判断后端是否返回数据
            if(xhr.readyState === 4){
                //判断数据的状态
                if(xhr.status === 200){
                    //获取数据
                    let res = xhr.responseText
                    switch (dataType) {
                        case 'json': //如果返回的数据是json格式
                            res = JSON.parse(res)
                            break;
                        default:
                            break;
                    }
                    resolve(res)
                    //console.log(res)
                }
                else{
                    //console.log('错误：',xhr.status)
                    reject(xhr.status)
                }
            }
        }
        //设置请求方式和请求地址
        //定义一个空数组
        let tempArr = [] 
        //将对象中 键:值 的形式变成数组中 键=值 的形式
        for(let key in params){
            tempArr.push(`${key}=${params[key]}`) 
        }
        //通过join将数组中的 , 连接符变成 & 连接符
        xhr.open('get',`${url}?${tempArr.join('&')}`)
        //请求头
        for (let key in headers)
        {
            xhr.setRequestHeader(key, headers[key])
        }
        //发送请求
        xhr.send(null)
    })
}


/**
 * promise封装 发送post请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {object} headers 请求头
 * @return Promise
 */
function post(url,params,headers){
    return new Promise((resolve,reject) => {
        //创建对象
        const xhr = new XMLHttpRequest
        //监控请求状态
        xhr.onreadystatechange = () => {
            //判断后端是否返回数据
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    let res = JSON.parse(xhr.responseText)
                    resolve(res)
                }
                else{
                    reject(xhr.status)
                }
            }
        }
        //请求方式和请求地址
        xhr.open('post',url)
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        //设置请求头
        for (let key in headers)
        {
            xhr.setRequestHeader(key, headers[key])
        }
        //发送请求
         //定义一个空数组
         let tempArr = [] 
         //将对象中 键:值 的形式变成数组中 键=值 的形式
         for(let key in params){
             tempArr.push(`${key}=${params[key]}`) 
         }
        xhr.send(tempArr.join('&'))
    })
}

